package com.ocss.system.domain;

import java.util.Date;

import com.fasterxml.jackson.annotation.JsonFormat;
import org.apache.commons.lang3.builder.ToStringBuilder;
import org.apache.commons.lang3.builder.ToStringStyle;
import com.ocss.common.annotation.Excel;
import com.ocss.common.core.domain.BaseEntity;

/**
 * 课程信息对象 ocss_course
 *
 * @author ligen
 * @date 2024-03-06
 */
public class OcssCourse extends BaseEntity {
    private static final long serialVersionUID = 1L;

    /**
     * 课程id
     */
    private Long id;

    /**
     * 课程名称
     */
    @Excel(name = "课程名称")
    private String courseName;

    /**
     * 课程介绍
     */
    @Excel(name = "课程介绍")
    private String description;

    /**
     * 学分
     */
    @Excel(name = "学分")
    private Long credit;

    /**
     * 课程类别
     */
    @Excel(name = "课程类别")
    private String courseType;

    /**
     * 所属专业
     */
    @Excel(name = "所属专业")
    private Long professionId;

    /**
     * 校区/系
     */
    @Excel(name = "校区/系")
    private Long deptId;

    /**
     * 学期
     */
    @Excel(name = "学期")
    private Long semesterId;

    /**
     * 任课教师
     */
    @Excel(name = "任课教师")
    private Long teacherId;

    /**
     * 课程人数
     */
    @Excel(name = "课程人数")
    private Long courseNumber;

    private Long remainingCourses;

    /**
     * 上课时段
     */
    @Excel(name = "上课时段")
    private String classTimer;

    /**
     * 上课地点
     */
    @Excel(name = "上课地点")
    private String classLocation;

    /**
     * 课程状态（0:未发布 1:已发布 2:已抢完 3:已结束）
     */
    @Excel(name = "课程状态", readConverterExp = "0=:未发布,1=:已发布,2=:已抢完,3=:已结束")
    private String status;

    /**
     * 抢课开始时间
     */
    @JsonFormat(pattern = "yyyy-MM-dd")
    @Excel(name = "抢课开始时间", width = 30, dateFormat = "yyyy-MM-dd")
    private Date courseStartTime;

    /**
     * 抢课结束时间
     */
    @JsonFormat(pattern = "yyyy-MM-dd")
    @Excel(name = "抢课结束时间", width = 30, dateFormat = "yyyy-MM-dd")
    private Date courseEndTime;

    public Long getRemainingCourses() {
        return remainingCourses;
    }

    public void setRemainingCourses(Long remainingCourses) {
        this.remainingCourses = remainingCourses;
    }

    public void setId(Long id) {
        this.id = id;
    }

    public Long getId() {
        return id;
    }

    public void setCourseName(String courseName) {
        this.courseName = courseName;
    }

    public String getCourseName() {
        return courseName;
    }

    public void setDescription(String description) {
        this.description = description;
    }

    public String getDescription() {
        return description;
    }

    public void setCredit(Long credit) {
        this.credit = credit;
    }

    public Long getCredit() {
        return credit;
    }

    public void setCourseType(String courseType) {
        this.courseType = courseType;
    }

    public String getCourseType() {
        return courseType;
    }

    public void setProfessionId(Long professionId) {
        this.professionId = professionId;
    }

    public Long getProfessionId() {
        return professionId;
    }

    public void setDeptId(Long deptId) {
        this.deptId = deptId;
    }

    public Long getDeptId() {
        return deptId;
    }

    public void setSemesterId(Long semesterId) {
        this.semesterId = semesterId;
    }

    public Long getSemesterId() {
        return semesterId;
    }

    public void setTeacherId(Long teacherId) {
        this.teacherId = teacherId;
    }

    public Long getTeacherId() {
        return teacherId;
    }

    public void setCourseNumber(Long courseNumber) {
        this.courseNumber = courseNumber;
    }

    public Long getCourseNumber() {
        return courseNumber;
    }

    public void setClassTimer(String classTimer) {
        this.classTimer = classTimer;
    }

    public String getClassTimer() {
        return classTimer;
    }

    public void setClassLocation(String classLocation) {
        this.classLocation = classLocation;
    }

    public String getClassLocation() {
        return classLocation;
    }

    public void setStatus(String status) {
        this.status = status;
    }

    public String getStatus() {
        return status;
    }

    public void setCourseStartTime(Date courseStartTime) {
        this.courseStartTime = courseStartTime;
    }

    public Date getCourseStartTime() {
        return courseStartTime;
    }

    public void setCourseEndTime(Date courseEndTime) {
        this.courseEndTime = courseEndTime;
    }

    public Date getCourseEndTime() {
        return courseEndTime;
    }

    @Override
    public String toString() {
        return new ToStringBuilder(this, ToStringStyle.MULTI_LINE_STYLE)
                .append("id", getId())
                .append("courseName", getCourseName())
                .append("description", getDescription())
                .append("credit", getCredit())
                .append("courseType", getCourseType())
                .append("professionId", getProfessionId())
                .append("deptId", getDeptId())
                .append("semesterId", getSemesterId())
                .append("teacherId", getTeacherId())
                .append("courseNumber", getCourseNumber())
                .append("classTimer", getClassTimer())
                .append("classLocation", getClassLocation())
                .append("status", getStatus())
                .append("courseStartTime", getCourseStartTime())
                .append("courseEndTime", getCourseEndTime())
                .append("createBy", getCreateBy())
                .append("createTime", getCreateTime())
                .append("updateBy", getUpdateBy())
                .append("updateTime", getUpdateTime())
                .append("remainingCourses", getRemainingCourses())
                .toString();
    }
}
